// #include <iostream>
// #include <vector>
// using namespace std;

// const int N = 100010;

// int n;
// vector<int> edges[N];
// bool st[N];// 标记是否访问过

// void dfs(int u){
//     st[u] = true;
//     cout << u << " ";
//     for(auto v : edges[u]){
//         if(!st[v]){
//             dfs(v);
//         }
//     }
// }


// int main(){
//     cin >> n;
    
//     for(int i = 1;i < n;i++){
//         int a ,b; cin >> a >> b;
//         edges[a].push_back(b);
//         edges[b].push_back(a);
//     }

//     dfs(1);
    
    
//     return 0;
// }


// 用链式前向星存储
#include <iostream>

using namespace std;

const int N = 100010;

int n;
int h[N],e[N],ne[N],idx;    
bool st[N];

void add(int a,int b){
    idx++;
    e[idx] = b,ne[idx] = h[a],h[a] = idx;
}

void dfs(int u){    
    st[u] = true;
    cout << u << " ";
    for(int i = h[u];i;i = ne[i]){
        int j = e[i];
        if(!st[j]){
            dfs(j);
        }
    }

}


int main(){
    cin >> n;
    for(int i = 1;i < n;i++){
        int a ,b; cin >> a >> b;
        add(a,b);
        add(b,a);
    }

    dfs(1);

    return 0;   
}



